import request from '../utils/api'

/**
 * 报表服务类，提供报表管理相关的API调用
 */
class ReportService {
  /**
   * 获取报表列表
   * @param pageNum - 页码
   * @param pageSize - 每页数量
   * @param query - 搜索关键词
   * @param reportType - 报表类型
   * @param dateRange - 日期范围
   * @returns 报表列表数据
   */
  getReportList(
    pageNum: number,
    pageSize: number,
    query?: string,
    reportType?: string,
    dateRange?: string[]
  ): Promise<any> {
    return request.get('/report/list', {
      params: {
        pageNum,
        pageSize,
        query,
        reportType,
        startDate: dateRange?.[0],
        endDate: dateRange?.[1]
      }
    })
  }

  /**
   * 获取报表详情
   * @param id - 报表ID
   * @returns 报表详情数据
   */
  getReportDetail(id: number): Promise<any> {
    return request.get(`/report/${id}`)
  }

  /**
   * 创建报表
   * @param data - 报表数据
   * @returns 创建结果
   */
  createReport(data: any): Promise<any> {
    return request.post('/report', data)
  }

  /**
   * 更新报表
   * @param id - 报表ID
   * @param data - 更新的报表数据
   * @returns 更新结果
   */
  updateReport(id: number, data: any): Promise<any> {
    return request.put(`/report/${id}`, data)
  }

  /**
   * 删除报表
   * @param id - 报表ID
   * @returns 删除结果
   */
  deleteReport(id: number): Promise<any> {
    return request.delete(`/report/${id}`)
  }

  /**
   * 导出报表
   * @param id - 报表ID
   * @param format - 导出格式
   * @returns 导出结果
   */
  exportReport(id: number, format: string = 'excel'): Promise<any> {
    return request.get(`/report/${id}/export`, {
      params: {
        format
      },
      responseType: 'blob'
    })
  }

  /**
   * 获取报表统计数据
   * @param reportType - 报表类型
   * @param dateRange - 日期范围
   * @returns 统计数据
   */
  getReportStatistics(reportType: string, dateRange?: string[]): Promise<any> {
    return request.get('/report/statistics', {
      params: {
        reportType,
        startDate: dateRange?.[0],
        endDate: dateRange?.[1]
      }
    })
  }
}

export default new ReportService()